﻿// ***********************************************************************
// Assembly         : Logica
// Author           : Diego
// Created          : 03-02-2014
//
// Last Modified By : Diego
// Last Modified On : 03-02-2014
// ***********************************************************************
// <copyright file="LOG_Proyecto.cs" company="">
//     Copyright (c) . All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using AccesoDatos.Modulos.ClasesAccesoDatos;
using Modelado.Modulos.ClasesModelado;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

/// <summary>
/// The ClasesLogica namespace.
/// </summary>
namespace Logica.Modulos.ClasesLogica
{
    /// <summary>
    /// Class LOG_Proyecto.
    /// </summary>
    public class LOG_Proyecto : Negocio
    {

        //insertar Proyecto
        /// <summary>
        /// Crs the e_ proyecto.
        /// </summary>
        /// <param name="obj">The object.</param>
        /// <returns>System.Int32.</returns>
        public int CRE_Proyecto(MOD_Proyecto obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proyecto objBD = new AD_Proyecto();

                int codigo = objBD.CRE_Proyecto(this.comando, obj);

                this.ConfirmarTransaccion();

                return codigo;
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }



        //Elimina Proyectos

        /// <summary>
        /// Des the l_ proyectos.
        /// </summary>
        /// <param name="codigo">The codigo.</param>
        public void DEL_Proyectos(int codigo)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proyecto objBD = new AD_Proyecto();

                objBD.DEL_Proyecto(this.comando, codigo);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }


        //Actualiza Proyecto
        /// <summary>
        /// Ups the d_ proyecto.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void UPD_Proyecto(MOD_Proyecto obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proyecto objBD = new AD_Proyecto();

                objBD.UPD_Proyecto(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }

        }




        //consultar grid Proyecto Donde usuario es administrador o participante

        /// <summary>
        /// Ses the l_ grid_ proyecto.
        /// </summary>
        /// <param name="codusuario">The codusuario.</param>
        /// <returns>List{MOD_Proyecto}.</returns>
        public List<MOD_Proyecto> SEL_Grid_Proyecto(int codusuario)
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                List<MOD_Proyecto> lista = objBD.SEL_Grid_Proyectos(this.comando, codusuario);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }


        
        //4 muestra grid de Proyectos Donde usuario es administrador

        /// <summary>
        /// Ses the l_ grid_ proyectos_ admin.
        /// </summary>
        /// <param name="codusuario">The codusuario.</param>
        /// <returns>List{MOD_Proyecto}.</returns>
        public List<MOD_Proyecto> SEL_Grid_Proyectos_Admin(int codusuario)
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                List<MOD_Proyecto> lista = objBD.SEL_Grid_Proyectos_Admin(this.comando, codusuario);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }


        ////4 muestra grid de Proyectos Donde usuario es participante solamente 
        /// <summary>
        /// Ses the l_ grid_ proyectos_ participante.
        /// </summary>
        /// <param name="codusuario">The codusuario.</param>
        /// <returns>List{MOD_Proyecto}.</returns>
        public List<MOD_Proyecto> SEL_Grid_Proyectos_Participante(int codusuario)
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                List<MOD_Proyecto> lista = objBD.SEL_Grid_Proyectos_Participante(this.comando, codusuario);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        ////4 muestra grid de TODOS los Proyectos de la BD

        /// <summary>
        /// Ses the l_ grid_ proyectos_ bd.
        /// </summary>
        /// <returns>List{MOD_Proyecto}.</returns>
        public List<MOD_Proyecto> SEL_Grid_Proyectos_BD()
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                List<MOD_Proyecto> lista = objBD.SEL_Grid_Proyectos_BD(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }
        //Seleccionar CODPROYECTO by id
        /// <summary>
        /// Ses the l_ proyecto by identifier.
        /// </summary>
        /// <param name="CODPROYECTO">The codproyecto.</param>
        /// <returns>MOD_Proyecto.</returns>
        public MOD_Proyecto SEL_ProyectoByID(int CODPROYECTO)
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                MOD_Proyecto objCliente = objBD.SEL_ProyectoByID(this.comando, CODPROYECTO);

                this.CerrarConexion();

                return objCliente;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }


        //Seleccionar Estado Proyecto
        /// <summary>
        /// Ses the l_ estproyecto.
        /// </summary>
        /// <returns>List{MOD_Proyecto}.</returns>
        public List<MOD_Proyecto> SEL_ESTPROYECTO()
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                List<MOD_Proyecto> lista = objBD.SEL_ESTPROYECTO(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }


        //Seleccionar  Cliente
        /// <summary>
        /// Ses the l_ cliente.
        /// </summary>
        /// <returns>List{MOD_Clientes}.</returns>
        public List<MOD_Clientes> SEL_CLIENTE()
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                List<MOD_Clientes> lista = objBD.SEL_CLIENTE(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        //Seleccionar  usuario
        /// <summary>
        /// Ses the l_ usuario.
        /// </summary>
        /// <returns>List{MOD_Usuarios}.</returns>
        public List<MOD_Usuarios> SEL_USUARIO()
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                List<MOD_Usuarios> lista = objBD.SEL_USUARIO(this.comando);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }
        }

        //insertar Proyecto
        /// <summary>
        /// Crs the e_ proyecto_ participante.
        /// </summary>
        /// <param name="obj">The object.</param>
        public void CRE_Proyecto_Participante(MOD_Proyecto obj)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proyecto objBD = new AD_Proyecto();

                objBD.CRE_Proyecto_Participante(this.comando, obj);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

       // PROYECTO PARTICIANTE


        /// <summary>
        /// Crs the e_ proyecto_ participante.
        /// </summary>
        /// <param name="CodProyecto">The cod proyecto.</param>
        /// <param name="CodParticipante">The cod participante.</param>
        public void CRE_Proyecto_Participante(int CodProyecto, int CodParticipante)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proyecto objBD = new AD_Proyecto();

                objBD.CRE_Proyecto_Participante(this.comando, CodProyecto, CodParticipante);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }

        /// <summary>
        /// Ses the l_ grid_ proyecto_ participante.
        /// </summary>
        /// <param name="CodProyecto">The cod proyecto.</param>
        /// <returns>List{MOD_Usuarios}.</returns>
        public List<MOD_Usuarios> SEL_Grid_Proyecto_Participante(int CodProyecto)
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                List<MOD_Usuarios> lista = objBD.SEL_Grid_Proyecto_Participante(this.comando, CodProyecto);

                this.CerrarConexion();

                return lista;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }

        /// <summary>
        /// Ses the l_ proyecto_ participante by i ds.
        /// </summary>
        /// <param name="CodProyecto">The cod proyecto.</param>
        /// <param name="CodParticipante">The cod participante.</param>
        /// <returns>System.Int32.</returns>
        public int SEL_Proyecto_ParticipanteByIDs(int CodProyecto, int CodParticipante)
        {
            try
            {
                this.AbrirConexion();

                AD_Proyecto objBD = new AD_Proyecto();

                int cant_part = objBD.SEL_Proyecto_ParticipanteByIDs(this.comando, CodProyecto, CodParticipante);

                this.CerrarConexion();

                return cant_part;
            }
            catch (Exception exc)
            {
                this.CerrarConexion();
                throw exc;
            }

        }

        /// <summary>
        /// Des the l_ proyecto_ participante.
        /// </summary>
        /// <param name="CodProyecto">The cod proyecto.</param>
        /// <param name="CodParticipante">The cod participante.</param>
        public void DEL_Proyecto_Participante(int CodProyecto, int CodParticipante)
        {
            try
            {
                this.IniciarTransaccion();

                AD_Proyecto objBD = new AD_Proyecto();

                objBD.DEL_Proyecto_Participante(this.comando, CodProyecto, CodParticipante);

                this.ConfirmarTransaccion();
            }
            catch (Exception exc)
            {
                this.DeshacerTransaccion();
                throw exc;
            }
        }
    }
}
